{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "titanic_url = ('https://raw.githubusercontent.com/amueller/'\n",
    "               'scipy-2017-sklearn/091d371/notebooks/datasets/titanic3.csv')\n",
    "titanic = pd.read_csv(titanic_url)\n",
    "titanic['random_cat'] = np.random.randint(3, size=titanic.shape[0])\n",
    "titanic['random_num'] = np.random.randn(titanic.shape[0])\n",
    "\n",
    "categorical_columns = ['pclass', 'sex', 'embarked', 'random_cat']\n",
    "numerical_columns = ['age', 'sibsp', 'parch', 'fare', 'random_num']\n",
    "\n",
    "data = titanic[categorical_columns + numerical_columns]\n",
    "labels = titanic['survived']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pclass</th>\n",
       "      <th>sex</th>\n",
       "      <th>embarked</th>\n",
       "      <th>random_cat</th>\n",
       "      <th>age</th>\n",
       "      <th>sibsp</th>\n",
       "      <th>parch</th>\n",
       "      <th>fare</th>\n",
       "      <th>random_num</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>29.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>211.3375</td>\n",
       "      <td>-1.331348</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>0.9167</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>151.5500</td>\n",
       "      <td>-1.250649</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>S</td>\n",
       "      <td>2</td>\n",
       "      <td>2.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>151.5500</td>\n",
       "      <td>-1.696596</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>S</td>\n",
       "      <td>1</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>151.5500</td>\n",
       "      <td>-0.023911</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>25.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>151.5500</td>\n",
       "      <td>-0.030937</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>S</td>\n",
       "      <td>1</td>\n",
       "      <td>48.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.5500</td>\n",
       "      <td>0.267747</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>S</td>\n",
       "      <td>1</td>\n",
       "      <td>63.0000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>77.9583</td>\n",
       "      <td>-0.312384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>39.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>-0.641420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>53.0000</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>51.4792</td>\n",
       "      <td>1.041660</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>C</td>\n",
       "      <td>1</td>\n",
       "      <td>71.0000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>49.5042</td>\n",
       "      <td>-0.582529</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   pclass     sex embarked  random_cat      age  sibsp  parch      fare  \\\n",
       "0       1  female        S           0  29.0000      0      0  211.3375   \n",
       "1       1    male        S           0   0.9167      1      2  151.5500   \n",
       "2       1  female        S           2   2.0000      1      2  151.5500   \n",
       "3       1    male        S           1  30.0000      1      2  151.5500   \n",
       "4       1  female        S           0  25.0000      1      2  151.5500   \n",
       "5       1    male        S           1  48.0000      0      0   26.5500   \n",
       "6       1  female        S           1  63.0000      1      0   77.9583   \n",
       "7       1    male        S           0  39.0000      0      0    0.0000   \n",
       "8       1  female        S           0  53.0000      2      0   51.4792   \n",
       "9       1    male        C           1  71.0000      0      0   49.5042   \n",
       "\n",
       "   random_num  \n",
       "0   -1.331348  \n",
       "1   -1.250649  \n",
       "2   -1.696596  \n",
       "3   -0.023911  \n",
       "4   -0.030937  \n",
       "5    0.267747  \n",
       "6   -0.312384  \n",
       "7   -0.641420  \n",
       "8    1.041660  \n",
       "9   -0.582529  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    data, labels, stratify=labels, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Random Forest importances of an overfitting model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RF train accuracy: 1.000\n",
      "RF test accuracy: 0.811\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.model_inspection import permutation_importance\n",
    "from sklearn.compose import ColumnTransformer\n",
    "\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import OneHotEncoder\n",
    "\n",
    "\n",
    "categorical_pipe = Pipeline([\n",
    "    ('imputer', SimpleImputer(strategy='constant', fill_value='missing')),\n",
    "    ('onehot', OneHotEncoder(handle_unknown='ignore'))\n",
    "])\n",
    "numerical_pipe = Pipeline([\n",
    "    ('imputer', SimpleImputer(strategy='mean'))\n",
    "])\n",
    "\n",
    "preprocessing = ColumnTransformer(\n",
    "    [('cat', categorical_pipe, categorical_columns),\n",
    "     ('num', numerical_pipe, numerical_columns)])\n",
    "\n",
    "rf = Pipeline([\n",
    "    ('preprocess', preprocessing),\n",
    "    ('classifier', RandomForestClassifier(n_estimators=100, min_samples_leaf=1,\n",
    "                                          random_state=42))\n",
    "])\n",
    "rf.fit(X_train, y_train)\n",
    "\n",
    "\n",
    "print(\"RF train accuracy: %0.3f\" % rf.score(X_train, y_train))\n",
    "print(\"RF test accuracy: %0.3f\" % rf.score(X_test, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ohe = (rf.named_steps['preprocess']\n",
    "         .named_transformers_['cat']\n",
    "         .named_steps['onehot'])\n",
    "feature_names = []\n",
    "for col, cats in zip(categorical_columns, ohe.categories_):\n",
    "    for cat in cats:\n",
    "        feature_names.append(\"{}_{}\".format(col, cat))\n",
    "feature_names = np.array(feature_names + numerical_columns)\n",
    "\n",
    "tree_feature_importances = (\n",
    "    rf.named_steps['classifier'].feature_importances_)\n",
    "sorted_idx = tree_feature_importances.argsort()\n",
    "\n",
    "y_ticks = np.arange(0, len(feature_names))\n",
    "_, ax = plt.subplots(figsize=(10, 8))\n",
    "ax.barh(y_ticks, tree_feature_importances[sorted_idx])\n",
    "ax.set_yticklabels(feature_names[sorted_idx])\n",
    "ax.set_yticks(y_ticks)\n",
    "ax.set_title(\"Random Forest Feature Importances\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Permutation Importances on the test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "permute_importance = permutation_importance(rf, X_test, y_test, n_rounds=30)\n",
    "permute_importance_mean = np.mean(permute_importance, axis=-1)\n",
    "sorted_idx = permute_importance_mean.argsort()\n",
    "\n",
    "_, ax = plt.subplots(figsize=(10, 8))\n",
    "ax.boxplot(permute_importance[sorted_idx].T,\n",
    "           vert=False, labels=X_test.columns[sorted_idx])\n",
    "ax.set_title(\"Permutation Importances (test set)\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Permutation importances on the training set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "permute_importance = permutation_importance(rf, X_train, y_train, n_rounds=30)\n",
    "permute_importance_mean = np.mean(permute_importance, axis=-1)\n",
    "sorted_idx = permute_importance_mean.argsort()\n",
    "\n",
    "_, ax = plt.subplots(figsize=(10, 8))\n",
    "ax.boxplot(permute_importance[sorted_idx].T,\n",
    "           vert=False, labels=X_train.columns[sorted_idx])\n",
    "ax.set_title(\"Permutation Importances (train set)\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Same analysis on non-overfitting model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RF train accuracy: 0.823\n",
      "RF test accuracy: 0.829\n"
     ]
    }
   ],
   "source": [
    "rf.named_steps[\"classifier\"].set_params(min_samples_leaf=10)\n",
    "rf.fit(X_train, y_train)\n",
    "print(\"RF train accuracy: %0.3f\" % rf.score(X_train, y_train))\n",
    "print(\"RF test accuracy: %0.3f\" % rf.score(X_test, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ohe = (rf.named_steps['preprocess']\n",
    "         .named_transformers_['cat']\n",
    "         .named_steps['onehot'])\n",
    "feature_names = []\n",
    "for col, cats in zip(categorical_columns, ohe.categories_):\n",
    "    for cat in cats:\n",
    "        feature_names.append(\"{}_{}\".format(col, cat))\n",
    "feature_names = np.array(feature_names + numerical_columns)\n",
    "\n",
    "tree_feature_importances = (\n",
    "    rf.named_steps['classifier'].feature_importances_)\n",
    "sorted_idx = tree_feature_importances.argsort()\n",
    "\n",
    "y_ticks = np.arange(0, len(feature_names))\n",
    "_, ax = plt.subplots(figsize=(10, 8))\n",
    "ax.barh(y_ticks, tree_feature_importances[sorted_idx])\n",
    "ax.set_yticklabels(feature_names[sorted_idx])\n",
    "ax.set_yticks(y_ticks)\n",
    "ax.set_title(\"Random Forest Feature Importances\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "permute_importance = permutation_importance(rf, X_test, y_test, n_rounds=30)\n",
    "permute_importance_mean = np.mean(permute_importance, axis=-1)\n",
    "sorted_idx = permute_importance_mean.argsort()\n",
    "\n",
    "_, ax = plt.subplots(figsize=(10, 8))\n",
    "ax.boxplot(permute_importance[sorted_idx].T,\n",
    "           vert=False, labels=X_test.columns[sorted_idx])\n",
    "ax.set_title(\"Permutation Importances (test set)\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "permute_importance = permutation_importance(rf, X_train, y_train, n_rounds=30)\n",
    "permute_importance_mean = np.mean(permute_importance, axis=-1)\n",
    "sorted_idx = permute_importance_mean.argsort()\n",
    "\n",
    "_, ax = plt.subplots(figsize=(10, 8))\n",
    "ax.boxplot(permute_importance[sorted_idx].T,\n",
    "           vert=False, labels=X_train.columns[sorted_idx])\n",
    "ax.set_title(\"Permutation Importances (train set)\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
